package queue;

import java.util.LinkedList;
import java.util.Queue;

/**
 * @author 张取
 * @version 1.0
 * @date 2022/1/8 上午10:21
 * src.queue
 */

public class OperationsCompare {
    public static void main(String[] args){
        Queue<Integer> queue = new LinkedList<>();

        //获取队头元素
        if (queue.peek() != null) {
            System.out.println("peek获取元素成功");
        } else {
            System.out.println("peek获取元素失败");
        }
        try {
            queue.element();
            System.out.println("element获取元素成功");
        } catch (Exception e){
            System.out.println("element获取元素失败");
        }

        //插入元素
        if(queue.offer(200)){
            System.out.println("offer添加成功");
        } else {
            System.out.println("offer添加失败");
        }
        try {
            queue.add(100);
            System.out.println("add添加成功");
        } catch (Exception e){
            System.out.println("add添加失败");
        }

        // 删除队头元素
        for(int i = 0; i < 2; ++i){
            if(queue.poll() != null){
                System.out.println("poll删除元素成功");
            } else {
                System.out.println("poll删除元素失败");
            }
            try {
                queue.remove();
                System.out.println("remove删除成功");
            } catch (Exception e){
                System.out.println("remove删除失败");
            }
        }
    }
}

/**
 * (1) 比较peek和element获取队头元素:
 *     当元素不存在时，element会抛出异常，而peek会返回null。
 * (2) add队尾添加元素和remove队头删除元素失败时会抛出异常。
 * (3) 添加元素推荐使用offer，删除元素并返回元素值使用poll。
 */
